// Emacs style mode select	 -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:
//
//
//-----------------------------------------------------------------------------


#ifndef __D_EVENT__
#define __D_EVENT__


#include "doomtype.h"


//
// Event handling.
//

// Input event types.
typedef enum
{
    ev_keydown,
    ev_keyup,
    ev_mouse,
    ev_joystick
} evtype_t;

// Event structure.
typedef struct
{
    evtype_t	type;
    int			data1;			// keys / mouse/joystick buttons
    int			data2;			// mouse/joystick x move
    int			data3;			// mouse/joystick y move
} event_t;


typedef enum
{
    ga_nothing,
    ga_loadlevel,
    ga_newgame,
    ga_loadgame,
    ga_savegame,
    ga_playdemo,
    ga_completed,
    ga_victory,
    ga_worlddone,
    ga_screenshot
} gameaction_t;



//
// Button/action code definitions.
//
typedef enum
{
    // Press "Fire".
    BT_ATTACK			= 1,
    // Use button, to open doors, activate switches.
    BT_USE				= 2,

    // Flag: game events, not really buttons.
    BT_SPECIAL			= 128,
    BT_SPECIALMASK		= 3,

    // Flag, weapon change pending.
    // If true, the next 3 bits hold weapon num.
    BT_CHANGE			= 4,
    // The 3bit weapon mask and shift, convenience.
    BT_WEAPONMASK		= (8+16+32),
    BT_WEAPONSHIFT		= 3,

    // Pause the game.
    BTS_PAUSE			= 1,
    // Save the game at each console.
    BTS_SAVEGAME		= 2,

    // Savegame slot numbers
    //	occupy the second byte of buttons.
    BTS_SAVEMASK		= (4+8+16),
    BTS_SAVESHIFT		= 2,

} buttoncode_t;




//
// GLOBAL VARIABLES
//
#define MAXEVENTS				64

extern	event_t			events[MAXEVENTS];
extern	int				eventhead;
extern	int				eventtail;

extern	gameaction_t	gameaction;


#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------
